/**
 * JSON文件上传的hooks
 * @param {Object} options 配置选项
 * @param {string} options.uploadFolder 上传文件夹路径，如 'task-json'
 * @param {string} options.jsonName JSON文件名（不含扩展名）
 * @returns {Object} 返回上传相关的方法
 */
export function useJsonUploader(options = {}) {
  const { uploadFolder = 'task-json', jsonName = 'default_json' } = options;
  
  // 腾讯云COS存储桶信息
  const COS_CONFIG = {
    bucket: import.meta.env.VITE_COS_CONFIG_BUCKET,
    region: import.meta.env.VITE_COS_REGION,
    base_url: import.meta.env.VITE_COS_CONFIG_BASEURL
  };
  
  /**
   * 上传JSON数据到腾讯云COS
   * @param {Object} jsonData 要上传的JSON数据
   */
  const uploadJson = async (jsonData) => {
    try {
      if (!jsonData) {
        console.error('没有JSON数据可上传');
        return { success: false, error: '没有JSON数据' };
      }
      
      // 将JSON对象转换为字符串
      const jsonString = JSON.stringify(jsonData, null, 2);
      
      // 创建JSON文件的Blob
      const json_blob = new Blob([jsonString], { 
        type: 'application/json',
        lastModified: Date.now()
      });
      
      const file_name = `${jsonName}.json`;
      const upload_url = `${COS_CONFIG.base_url}/${uploadFolder}/${file_name}`;
      
      // 使用PUT请求直接上传到公有读写存储桶
      const response = await fetch(upload_url, {
        method: 'PUT',
        body: json_blob,
        headers: {
          'Content-Type': 'application/json'
        }
      });
      
      if (response.ok) {
        console.log('JSON文件上传成功:', upload_url);
        return { success: true, url: upload_url, filename: file_name };
      } else {
        console.error('JSON文件上传失败:', response.statusText);
        return { success: false, error: response.statusText };
      }
    } catch (error) {
      console.error('JSON文件上传过程中发生错误:', error);
      return { success: false, error: error.message };
    }
  };
  
  return {
    uploadJson
  };
}